'use client'
import { useContext } from 'react';
import AuthContext from '../context/AuthContext';

/**
 * 自定义Hook，用于访问认证状态和方法
 * 提供更安全、更便捷的方式来获取用户信息和认证方法
 */
export const useAuth = () => {
  const context = useContext(AuthContext);
  
  // 检查AuthContext是否在AuthProvider内部使用
  if (!context) {
    throw new Error('useAuth必须在AuthProvider组件内部使用');
  }
  
  return context;
};

/**
 * 获取当前登录用户信息的便捷Hook
 * 如果用户未登录，返回null
 */
export const useCurrentUser = () => {
  const { user } = useAuth();
  return user;
};

/**
 * 检查用户是否已认证的便捷Hook
 * 使用AuthContext中的isAuthenticated状态，比简单检查user对象更可靠
 */
export const useIsAuthenticated = () => {
  const { isAuthenticated } = useAuth();
  return isAuthenticated;
};

/**
 * 检查认证状态是否正在加载的便捷Hook
 * 适用于需要在认证状态确定前显示加载状态的场景
 */
export const useAuthLoading = () => {
  const { isLoading } = useAuth();
  return isLoading;
};

/**
 * 获取登录方法的便捷Hook
 */
export const useLogin = () => {
  const { login } = useAuth();
  return login;
};

/**
 * 获取登出方法的便捷Hook
 */
export const useLogout = () => {
  const { logout } = useAuth();
  return logout;
};

/**
 * 综合认证状态Hook，返回所有认证相关状态和方法
 * 适用于需要同时使用多个认证状态和方法的组件
 */
export const useAuthStatus = () => {
  const context = useAuth();
  return {
    user: context.user,
    isAuthenticated: context.isAuthenticated,
    isLoading: context.isLoading,
    login: context.login,
    logout: context.logout
  };
};